
package appvideo.persistencia;

import appvideo.logica.Ingreso_Gasto;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

public class Persistencia_Ingreso_Gasto {
    
    public static boolean alta(Ingreso_Gasto ig){
        boolean ret=false;
        Connection con = Persistencia_Conexion.getConnection();
        Statement st=null;
        ResultSet rs=null;
        
        try {
            SimpleDateFormat dt = new SimpleDateFormat("yyyy-MM-dd");
            st = con.createStatement();
            st.executeUpdate("INSERT INTO contabilidad(cantidad, descripcion, tipo, fecha) VALUES ("+ig.getCantidad()+",'"+ig.getDescripcion()+"',"+ig.getTipo()+",'"+dt.format(ig.getFecha()) +"')");
            ret = true;
            
            
        } catch (SQLException sqlex) {
            System.out.println(sqlex.getMessage());
        } catch (Exception e){
            System.out.println(e.getMessage());
        }
        return ret;
    }
    
    public static Ingreso_Gasto busca(int id,int tipo){
        Ingreso_Gasto ig=null;
        Connection con = Persistencia_Conexion.getConnection();
        Statement st=null;
        ResultSet rs=null;
        
        try{
            st = con.createStatement();
            //Atencion: No devuelve un Gasto/Ingreso si no coincide con id y tipo(Por ej: Para evitar devolver gastos
            //si buscamos
            rs = st.executeQuery("Select * FROM contabilidad where id="+id+" AND tipo="+tipo+"");
            if(rs.next()){
                ig = new Ingreso_Gasto(rs.getInt("id"),rs.getString("descripcion"),rs.getDouble("cantidad"),rs.getInt("tipo"),rs.getDate("fecha"));
            }
        }catch (SQLException sqlex) {
            System.out.println(sqlex.getMessage());
        } catch(Exception ex){
            System.out.println(ex.getMessage());
        }finally{
            try {
                rs.close();
                st.close();
                con.close();
            }catch (SQLException sqlex) {
                System.out.println(sqlex.getMessage());
            }catch(Exception ex){
                System.out.println(ex.getMessage());
            } 
        }
        return ig;
    }
    
    public static List<Ingreso_Gasto> visualiza(String fechaIni,String fechaFin,int tipo){
        List<Ingreso_Gasto> igLista = new ArrayList<Ingreso_Gasto>();
        Connection con = Persistencia_Conexion.getConnection();
        Statement st=null;
        ResultSet rs=null;
        
        try {
            SimpleDateFormat dt = new SimpleDateFormat("yyyy-MM-dd");
            st = con.createStatement();
            String query = "SELECT id,cantidad,descripcion,tipo,fecha FROM contabilidad "
                    + "WHERE fecha>='"+fechaIni+"' AND fecha <'"+fechaFin+"' AND tipo="+tipo+"";
            rs = st.executeQuery(query);
            
            while(rs.next()){
                Ingreso_Gasto ig = new Ingreso_Gasto(rs.getInt("id"),rs.getString("descripcion"),rs.getDouble("cantidad"),rs.getInt("tipo"),rs.getDate("fecha"));
                igLista.add(ig);
            }
            
        } catch (SQLException sqlex) {
            System.out.println(sqlex.getMessage());
        } catch (Exception e){
            System.out.println(e.getMessage());
        }
        
        return igLista;
    }
    
    public static boolean modifica(Ingreso_Gasto ig){
        boolean ret=false;
        Connection con = Persistencia_Conexion.getConnection();
        Statement st=null;
        
        try{
            st = con.createStatement();
            SimpleDateFormat dt = new SimpleDateFormat("yyyy-MM-dd");
            st.executeUpdate("UPDATE contabilidad "
                    + "SET cantidad="+ig.getCantidad() +", descripcion='"+ig.getDescripcion()+"',"
                    + " tipo="+ig.getTipo()+",fecha='"+dt.format(ig.getFecha())+"'"
                    + " WHERE id="+ig.getId()+"");
            ret=true;
        }catch (SQLException sqlex) {
            System.out.println(sqlex.getMessage());
        } finally {
            try {
                st.close();
                con.close();
            }catch (SQLException sqlex) {
                System.out.println(sqlex.getMessage());
            }catch(Exception ex){
                System.out.println(ex.getMessage());
            }
        }
        
        return ret;
    }
  
}
